#version 300 es

#ifdef GL_ES
precision mediump float;
#endif

#define PI 3.14159

uniform vec2 u_resolution;
uniform float u_time;

out vec4 outColor;

float plot(vec2 st, float pct){
  return smoothstep(pct - 0.02, pct, st.y) -
        smoothstep(pct, pct+0.02, st.y);
}

void main()
{
  float solution = min(u_resolution.x, u_resolution.y);
  vec2 st = (gl_FragCoord.xy - u_resolution / 2.0) / solution;
  vec2 s = vec2(1.0, 1.0) - step(0.5, abs(st)); 
  if(s.x * s.y < 0.00001){
    discard;
  }

  float y;

  // st =  st* 2.0;
  // y = mod(st.x, 0.5); // 返回 x 对 0.5 取模的值
  //y = fract(x); // 仅仅返回数的小数部分
  //y = ceil(x);  // 向正无穷取整
  //y = floor(x); // 向负无穷取整
  //y = sign(x);  // 提取 x 的正负号
  //y = abs(x);   // 返回 x 的绝对值
  //y = clamp(x,0.0,1.0); // 把 x 的值限制在 0.0 到 1.0
  //y = min(0.0,x);   // 返回 x 和 0.0 中的较小值
  //y = max(0.0,x);   // 返回 x 和 0.0 中的较大值  

  st =  st* 2.0 * PI;
  y = sin(st.x + u_time);
  vec3 color = vec3(0.5);
  float pct = plot(st, y);
  color = (1.0 - pct)*color + pct * vec3(0.0, 1.0, 0.0);

  outColor = vec4(color, 1);
}